/**
 * 名称: AjaxResult.java<br>
 * 描述: <br>
 * 类型: Java<br>
 * 最近修改时间:2013-2-28 下午2:38:07<br>
 * 
 * @since 2013-2-28
 * @author 周昱
 */
package com.example.demo.domain;

import com.alibaba.fastjson.JSONObject;

/**
 * 前台Ajax请求的统一返回结果类
 * 包含一个 标志位 success, 一个消息属性, 以及包含返回数据<br />
 * 返回对象通过改写toString返回一个json字符串
 * 
 * @since 2013-2-28
 * @author "周昱"
 * 
 */
public class AjaxResult
{
	/**
	 * 标识
	 */
	private boolean success;
	/**
	 * 消息
	 */
	private String msg;
	/**
	 * 返回的数据
	 */
	private Object data;

	/**
	 * 默认构造函数返回一个空对象
	 */
	public AjaxResult() {}

	/**
	 * 新建一个success为指定值的对象
	 * 
	 * @param success
	 *            标识属性
	 */
	public AjaxResult(boolean success)
	{
		this(success, "", null);
	}

	/**
	 * 新建一个指定标识属性以及消息属性的返回对象
	 * 
	 * @param success
	 *            标识属性
	 * @param msg
	 *            消息
	 */
	public AjaxResult(boolean success, String msg)
	{
		this(success, msg, null);
	}

	/**
	 * 新建一个指定标识属性,消息属性并包含返回数据的返回对象
	 * 
	 * @param success
	 *            标识属性
	 * @param msg
	 *            消息
	 * @param data
	 *            返回的数据对象
	 */
	public AjaxResult(boolean success, String msg, Object data)
	{
		this.success = success;
		this.msg = msg;
		this.data = data;
	}

	/**
	 * 
	 * 获取一个 标识属性为false 的Ajax返回对象
	 * 
	 * @return {@link AjaxResult}Ajax数据返回对象
	 * 
	 * @变更记录 2013-3-16 下午3:51:49 "周昱" 创建
	 * 
	 */
	public final static AjaxResult ERROR()
	{
		return ERROR("");
	}

	/**
	 * 
	 * 获取一个 标识属性为false 的Ajax返回对象
	 * 
	 * @param msg
	 *            消息
	 * @return {@link AjaxResult}Ajax数据返回对象
	 * 
	 * @变更记录 2013-3-16 下午3:52:06 "周昱" 创建
	 * 
	 */
	public final static AjaxResult ERROR(String msg)
	{
		return new AjaxResult(false, msg);
	}

	/**
	 * 
	 * 获取一个 标识属性为true 的Ajax返回对象
	 * 
	 * @return {@link AjaxResult}Ajax数据返回对象
	 * 
	 * @变更记录 2013-3-16 下午3:52:10 "周昱" 创建
	 * 
	 */
	public final static AjaxResult SUCCESS()
	{
		return SUCCESS("");
	}

	/**
	 * 
	 * 获取一个 标识属性为true 的Ajax返回对象
	 * 
	 * @param msg
	 *            消息
	 * @return {@link AjaxResult}Ajax数据返回对象
	 * 
	 * @变更记录 2013-3-16 下午3:52:14 "周昱" 创建
	 * 
	 */
	public final static AjaxResult SUCCESS(String msg)
	{
		return SUCCESS(msg, null);
	}

	/**
	 * 
	 * 获取一个 标识属性为true 的Ajax返回对象
	 * 
	 * @param data
	 *            返回数据对象
	 * @return {@link AjaxResult}Ajax数据返回对象
	 * 
	 * @变更记录 2013-3-16 下午3:52:18 "周昱" 创建
	 * 
	 */
	public final static AjaxResult SUCCESS(Object data)
	{
		return SUCCESS("", data);
	}

	/**
	 * 
	 * 获取一个 标识属性为true 的Ajax返回对象
	 * 
	 * @param msg
	 *            消息
	 * @param data
	 *            返回数据对象
	 * @return {@link AjaxResult}Ajax数据返回对象
	 * 
	 * @变更记录 2013-3-16 下午3:53:08 "周昱" 创建
	 * 
	 */
	public final static AjaxResult SUCCESS(String msg, Object data)
	{
		return new AjaxResult(true, msg, data);
	}

	/**
	 * 
	 * get: 标识属性
	 * 
	 * @变更记录 2013-3-16 下午4:33:22 "周昱" 创建
	 *
	 */
	public boolean isSuccess()
	{
		return success;
	}

	/**
	 * 
	 * set: 标识属性
	 * 
	 * @变更记录 2013-3-16 下午3:53:22 "周昱" 创建
	 *
	 * @return
	 */
	public void setSuccess(boolean success)
	{
		this.success = success;
	}

	/**
	 * 
	 * get: 消息
	 * 
	 * @变更记录 2013-3-16 下午3:53:30 "周昱" 创建
	 *
	 */
	public String getMsg()
	{
		return msg;
	}

	/**
	 * 
	 * set: 消息
	 * 
	 * @变更记录 2013-3-16 下午3:53:34 "周昱" 创建
	 *
	 */
	public void setMsg(String msg)
	{
		this.msg = msg;
	}

	/**
	 * get: 返回数据对象
	 * 
	 * @变更记录 2013-3-16 下午3:53:42 "周昱" 创建
	 *
	 */
	public Object getData()
	{
		return data;
	}

	/**
	 * 
	 * set: 返回数据对象
	 *
	 * @变更记录 2013-3-16 下午3:53:51 "周昱" 创建
	 *
	 */
	public void setData(Object data)
	{
		this.data = data;
	}

	/**
	 * 
	 * 将返回数据对象格式化为JSON格式字符串,<br />
	 * 这里运用了{@link JSONObject}来格式化
	 * 
	 * @return	JSON格式字符串
	 *
	 * @变更记录 2013-3-16 下午3:54:00 "周昱" 创建
	 *
	 */
	@Override
	public String toString()
	{
		return JSONObject.toJSONString(this);
//		return "{\"success\":" + success + ", \"msg\":\"" + msg + "\", \"data\":" + data + "}";
	}
}
